﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using QuanLyHocPhi.Model;

namespace QuanLyHocPhi.BLL
{
    partial class BizLoaiHinhDaoTao
    {
        public static List<LoaiHinhDaoTao> GetListLoaiHinhDaoTao()
        {
            using (var context = new QLHPEntities())
            {
                return context.LoaiHinhDaoTaoDbSet.ToList();
            }
        }

        public static void AddNew(string maLoaiHinh, string tenLoaiHinh)
        {
            using (var context = new QLHPEntities())
            {
                var count = context.LoaiHinhDaoTaoDbSet.Count(e => e.MaLoaiHinh == maLoaiHinh || e.TenLoaiHinh == tenLoaiHinh);
                if (count != 0)
                    throw new Exception("Đã có loại hình đào tạo với Mã loại hình đào tạo hoặc Tên loại hình đào tạo này");
                try
                {
                    var x = new LoaiHinhDaoTao { MaLoaiHinh = maLoaiHinh, TenLoaiHinh = tenLoaiHinh };
                    context.LoaiHinhDaoTaoDbSet.Add(x);
                    context.SaveChanges();
                }
                catch (Exception exc)
                {
                    throw new Exception("Lỗi xử lý cơ sở dữ liệu " + exc.Message, exc.InnerException);
                }
            }
        }

        /// <summary>
        /// Đổi tên loại hình đào tạo
        /// </summary>
        /// <param name="maLoaiHinh"></param>
        /// <param name="tenLoaiHinh"></param>
        public static void Update(string maLoaiHinh, string tenLoaiHinh)
        {
            using (var context = new QLHPEntities())
            {
                var x = context.LoaiHinhDaoTaoDbSet.Where(e => e.MaLoaiHinh == maLoaiHinh).FirstOrDefault();
                if (x == null)
                    throw new Exception("Không tìm thấy loại hình đào tạo");
                var count = context.LoaiHinhDaoTaoDbSet.Count(e => e.MaLoaiHinh != maLoaiHinh && e.TenLoaiHinh == tenLoaiHinh);
                if (count != 0)
                    throw new Exception("Đã có tên loại hình đào tạo này hệ thống");
                try
                {
                    x.TenLoaiHinh = tenLoaiHinh;                    
                    context.SaveChanges();
                }
                catch (Exception exc)
                {
                    throw new Exception("Lỗi xử lý cơ sở dữ liệu " + exc.Message, exc.InnerException);
                }
            }
        }

        public static void Delete(Model.LoaiHinhDaoTao x)
        {
            using (var context = new QLHPEntities())
            {
                var oX = context.LoaiHinhDaoTaoDbSet.Where(e => e.MaLoaiHinh == x.MaLoaiHinh).FirstOrDefault();
                if (oX == null)
                    throw new Exception("Không tìm thấy loại hình đào tạo");
                context.LoaiHinhDaoTaoDbSet.Remove(x);
                context.SaveChanges();
            }
        }
    }
}
